﻿using BLevy.Entidad;
using BLevy.Negocio;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BLevy.UI
{
    public partial class frmListadosSocios : Form
    {
        public frmListadosSocios()
        {
            InitializeComponent();
        }

        private void IniciarControles()
        {
            ckbGruposTitulares.CheckState = CheckState.Unchecked;
            ckbLocalidad.CheckState = CheckState.Unchecked;
            ckbOrdenAlfabetico.CheckState = CheckState.Unchecked;
            ckbOrdenNumerico.CheckState = CheckState.Unchecked;
            ckbTitulares.CheckState = CheckState.Unchecked;
            ckbZona.CheckState = CheckState.Unchecked;
            ckbActivos.CheckState = CheckState.Checked;
            ckbCuota.CheckState = CheckState.Checked;
            ckbDireccion.CheckState = CheckState.Checked;

            cmbLocalidad.Enabled = false;
            ckblZonas.Enabled = false;
        }

        private void FindLocalidades()
        {
            try
            {
                cmbLocalidad.DisplayMember = "localidad";
                cmbLocalidad.ValueMember = "id";
                cmbLocalidad.DataSource = Localidades.FindAll();

                if (cmbLocalidad.Items.Count != 0)
                {
                    FindZonaByLocalidad(Convert.ToInt32(cmbLocalidad.SelectedValue));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void FindZonaByLocalidad(int localidad_id)
        {
            try
            {
                var query = Negocio.Zonas.FindAllPorLocalidad(localidad_id);


                ckblZonas.Items.Clear();
                ckblZonas.DisplayMember = "zona";
                ckblZonas.ValueMember = "id";

                foreach (var fila in query)
                {
                    ckblZonas.Items.Add(fila);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void frmListadosSocios_Load(object sender, EventArgs e)
        {
            FindLocalidades();
            IniciarControles();
        }

        private void cmbLocalidad_SelectionChangeCommitted(object sender, EventArgs e)
        {
            FindZonaByLocalidad(Convert.ToInt32(cmbLocalidad.SelectedValue));
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private Boolean ValidarForm()
        {
            error.Clear();
            bool resultado = true;

            if(ckbGruposTitulares.CheckState == CheckState.Unchecked &&
                ckbTitulares.CheckState == CheckState.Unchecked)
            {
                resultado = false;
                error.SetError(ckbTitulares, "Debe seleccionar un filtro.");
                return resultado;
            }

            if(ckbOrdenNumerico.CheckState == CheckState.Unchecked && 
                ckbOrdenAlfabetico.CheckState == CheckState.Unchecked)
            {
                resultado = false;
                error.SetError(ckbOrdenNumerico, "Debe seleccionar un orden.");
                return resultado;
            }

            return resultado;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if(ValidarForm() == true)
            {
                GenerarQueryReporte();
            }
        }

        private void GenerarQueryReporte()
        {
            int? localidad_id = ckbLocalidad.Checked ? (int?)cmbLocalidad.SelectedValue : null;
            List<Zona> zona_ids = new List<Zona>();
            int? cuota = ckbCuota.Checked ? (int?)1 : null;
            int? zona_id = null;
            bool? direcciones = ckbDireccion.Checked;
            bool? cuotas = ckbCuota.Checked;

            if(ckblZonas.SelectedItems.Count > 0)
            {
                for (int i = 0; i < ckblZonas.Items.Count; i++ )
                {
                    if (ckblZonas.GetItemChecked(i))
                        zona_ids.Add((Zona)ckblZonas.Items[i]);                    
                }
            }

            string orden = string.Empty;

            int? activo = ckbActivos.Checked ? (int?)ckbActivos.CheckState : null;

            if (ckbOrdenNumerico.CheckState == CheckState.Checked)
                orden = "Numerico";

            if (ckbOrdenAlfabetico.CheckState == CheckState.Checked)
                orden = "Alfabetico";


            if(ckbTitulares.CheckState == CheckState.Checked)
            {
                frmSociosReporte frm = new frmSociosReporte("Titular", localidad_id, zona_id, orden, activo, zona_ids, cuota, direcciones, cuotas);
                frm.MdiParent = this.MdiParent;
                frm.Show();

                this.Close();
            }

            if(ckbGruposTitulares.CheckState == CheckState.Checked)
            {
                frmSociosReporte frm = new frmSociosReporte("GrupoTitular", localidad_id, zona_id, orden, activo, zona_ids, cuota, direcciones, cuotas  );
                frm.MdiParent = this.MdiParent;
                frm.Show();

                this.Close();
            }
        }

        private void ckbLocalidad_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbLocalidad.CheckState == CheckState.Checked)
                cmbLocalidad.Enabled = true;
            else
                cmbLocalidad.Enabled = false;
        }

        private void ckbZona_CheckedChanged(object sender, EventArgs e)
        {
            if (ckbZona.CheckState == CheckState.Checked)
                ckblZonas.Enabled = true;
            else
                ckblZonas.Enabled = false;
        }

        private void ckbZona_CheckedChanged_1(object sender, EventArgs e)
        {
            if (ckbZona.CheckState == CheckState.Checked)
                ckblZonas.Enabled = true;
            else
                ckblZonas.Enabled = false;
        }

        private void ckbTitulares_CheckedChanged(object sender, EventArgs e)
        {
            if(ckbTitulares.CheckState == CheckState.Checked)            
                ckbGruposTitulares.CheckState = CheckState.Unchecked;
            
        }

        private void ckbGruposTitulares_CheckedChanged(object sender, EventArgs e)
        {
            if(ckbGruposTitulares.CheckState == CheckState.Checked)            
                ckbTitulares.CheckState = CheckState.Unchecked;           
        }

        private void ckbOrdenAlfabetico_CheckedChanged(object sender, EventArgs e)
        {
            if(ckbOrdenAlfabetico.CheckState == CheckState.Checked)            
                ckbOrdenNumerico.CheckState = CheckState.Unchecked;
        }

        private void ckbOrdenNumerico_CheckedChanged(object sender, EventArgs e)
        {
            if(ckbOrdenNumerico.CheckState == CheckState.Checked)            
                ckbOrdenAlfabetico.CheckState = CheckState.Unchecked;       
        }

    }
}
